package com.base.cn.platform.os.dao.classes.topic;

import com.base.cn.platform.os.common.mybatis.BaseDao;
import com.base.cn.platform.os.entity.classes.topic.ClassesTopic;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 班级话题
 *
 * @author SK
 * @since 2018-05-18
 */
@Mapper
public interface ClassesTopicDao extends BaseDao<ClassesTopic> {

    /**
     * 获取用户的话题分类数据统计
     * @param clazz
     * @param classesId 班级ID
     * @param userId 用户ID
     * @return List<Map<String, Number>>
     */
    List<Map<String, Number>> classesTopicStatistics(@Param("clazz") Class<ClassesTopic> clazz,
                                                     @Param("classesId") BigDecimal classesId,
                                                     @Param("userId") BigDecimal userId);

    /**
     * 查询用户前台话题列表(全部的话题)
     * @param clazz
     * @param userId 用户ID
     * @return 数据列表
     */
    Page<ClassesTopic> findWebUserAllClassesTopicListPage(@Param("clazz") Class<ClassesTopic> clazz,
                                                          @Param("userId") BigDecimal userId);

    /**
     * 查询用户前台话题列表(发表的话题)
     * @param clazz
     * @param userId 用户ID
     * @return 数据列表
     */
    Page<ClassesTopic> findWebUserPublishClassesTopicListPage(@Param("clazz") Class<ClassesTopic> clazz,
                                                          @Param("userId") BigDecimal userId);

    /**
     * 查询用户前台话题列表(参与回复的话题)
     * @param clazz
     * @param userId 用户ID
     * @return 数据列表
     */
    Page<ClassesTopic> findWebUserReplyClassesTopicListPage(@Param("clazz") Class<ClassesTopic> clazz,
                                                              @Param("userId") BigDecimal userId);

    /**
     * 查询用户前台话题列表(分享的话题)
     * @param clazz
     * @param userId 用户ID
     * @return 数据列表
     */
    Page<ClassesTopic> findWebUserShareClassesTopicListPage(@Param("clazz") Class<ClassesTopic> clazz,
                                                            @Param("userId") BigDecimal userId);

    /**
     * 查询用户前台参与回复的话题数量
     * @param clazz
     * @param userId 用户ID
     * @return 数量
     */
    Long findWebUserReplyClassesTopicCount(@Param("clazz") Class<ClassesTopic> clazz,
                                           @Param("userId") BigDecimal userId);

    /**
     * 查询用户前台发表的的话题数量
     * @param clazz
     * @param userId 用户ID
     * @return 数量
     */
    Long findWebUserPublishClassesTopicCount(@Param("clazz") Class<ClassesTopic> clazz,
                                           @Param("userId") BigDecimal userId);

}
